perm filename REVERB.OLD[M11,LCS] blob
sn#411137 filedate 1979-01-18 generic text, type T, neo UTF8
SUBROUTINE REVERB
COMMON /LM/L(10),M(10),NSAMX
C CAN USE UP TO 10 FIELDS IN UNIT GEN.
COMMON I(1) /P/P(1) /GENS/GENS(1) /LFUNC/LFUNC,XNFUN,PINCR
1 /XIN/AMP,FREQ
COMMON /INS/INS(1) /NT/RNT(1) /ROUT/ROUT(1)
C INS=INSTRUMENT DEFINITIONS, RNT=NOTE CARD INFO, ROUT=OUTPUT BLOCK
EQUIVALENCE (L1,L(1)),(L2,L(2)),(L3,L(3)),(L4,L(4)),(
2 L5,L(5)),(L6,L(6)),(L7,L(7)),(L8,L(8))
3 ,(L9,L(9))
DIMENSION DL(1200),D2(1050),D3(950),D4(850),D5(150),
1 D6(50),D7(20) ,ND(7)
DATA ND/0,1200,2250,3200,4000,4150,4200/
C THESE ARE THE POINTERS TO PARTS OF THE DELAY ARRAY.
C FOLLOWING IS A TYPICAL MUS10 REVERB INST.
C INSTRUMENT REV;
C REV1(R,801,.827,D1);
C REV1(R,901,.805,D2);
C REV1(R,1011,.783,D3);
C REV1(R,1123,.764,D4);
C REV2(U1+U2+U3+U4,123,.7,D5);
C REV2(U5,43,.7,D6);
C REV2(U6,13,.7,D7);
C R←0;OUTA←OUTA+U7; END;
JD=RNT(L6)
IF(L5.LT.1000)GO TO 2
J=(L5-1000)/100
GO TO 1
C ABOVE FOR CONSTANTS IN REV.
2 J=RNT(L5)
1 J=ND(J)
C J=POINTER TO PROPER REVERB ARRAY (7 POSSIBLE POSITIONS)
IF(L4.LT.1000)GO TO 4
X=L4
X=(X-1000.)/100.
GO TO 3
4 X=RNT(L4)
C X=MULTIPLIER
3 IF(L3.LT.1000)GO TO 5
LD=(L3-1000)/100
GO TO 6
5 LD=RNT(L3)
C LD=DELAY, IN SMPLS
6 IF(JD.GE.LD)JD=0
DO 213 K=0,NSAMX
JD=JD+1
JX=JD+J
R=ROUT(L1+K)*X
ROUT(L2+K)=DL(JX)
C GET OUTPUT FROM DELAY LOOP
DL(JX)=R
C PUT CURRENT VALUE*GAIN INTO LOOP
IF(JD.EQ.LD)JD=0
213 CONTINUE
RNT(L6)=JD
RETURN
END